#include <iostream>
#include <stdexcept>
#include <windows.h>
#include <cmath>
using namespace std;

// 定义 Circle 类
class Circle {
private:
    double radius;                // 圆的半径
    static constexpr double PI = 3.14159265358979;  // 圆周率

public:
    // 构造函数：通过参数设置半径
    Circle(double r) {
        if (r <= 0) {
            throw invalid_argument("半径必须大于0！");
        }
        radius = r;
    }

    // 无参构造函数：默认半径为1
    Circle() : radius(1) {
        cout << "调用了无参构造函数！半径默认为1" << endl;
    }

    // 设置半径
    void SetRadius() {
        cout << "请输入圆的半径：" << endl;
        cin >> radius;
        if (radius <= 0) {
            throw invalid_argument("半径必须大于0！");
        }
    }

    // 获取半径
    double GetRadius() const {
        return radius;
    }

    // 计算面积
    double CalculateArea() const {
        return PI * radius * radius;
    }

    // 计算周长
    double CalculatePerimeter() const {
        return 2 * PI * radius;
    }
};

int main() {

    SetConsoleOutputCP(65001); // 设置控制台输出为 UTF-8 编码
    try {
        Circle circle(5);
        circle.SetRadius();

        cout << "圆的半径：" << circle.GetRadius() << endl;
        cout << "圆的面积：" << circle.CalculateArea() << endl;
        cout << "圆的周长：" << circle.CalculatePerimeter() << endl;
    } catch (const exception &e) {
        cerr << "错误: " << e.what() << endl;
    }

    return 0;
}
